package cn.lili.modules.goods.service;

import cn.lili.common.vo.PageVO;
import cn.lili.modules.goods.entity.dos.Studio;
import cn.lili.modules.goods.entity.vos.StudioVO;
import cn.lili.trigger.message.BroadcastMessage;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 直播间业务层
 *
 * @author Bulbasaur
 * @since 2021/5/17 10:02 上午
 */
public interface StudioService extends IService<Studio> {

	/**
	 * 创建直播间 直播间默认手机直播 默认开启：点赞、商品货架、评论、回放
	 * 
	 * @param studio
	 *            直播间
	 * @return 开启状态
	 */
	Boolean create(Studio studio);

	/**
	 * 修改直播间 直播间默认手机直播
	 * 
	 * @param studio
	 *            直播间
	 * @return 修改状态
	 */
	Boolean edit(Studio studio);

	/**
	 * 获取直播间信息
	 * 
	 * @param id
	 *            直播间ID
	 * @return 直播间VO
	 */
	StudioVO getStudioVO(String id);

	/**
	 * 获取直播间回放
	 * 
	 * @param roomId
	 *            房间ID
	 * @return 直播间回放地址
	 */
	String getLiveInfo(Integer roomId);

	/**
	 * 推送商品
	 * 
	 * @param roomId
	 *            房间ID
	 * @param goodsId
	 *            商品ID
	 * @param storeId
	 *            店铺ID
	 * @return 操作结果
	 */
	Boolean push(Integer roomId, Integer goodsId, String storeId);

	/**
	 * 删除商品
	 * 
	 * @param roomId
	 *            店铺ID
	 * @param goodsId
	 *            商品ID
	 * @return 操作结果
	 */
	Boolean goodsDeleteInRoom(Integer roomId, Integer goodsId, String storeId);

	/**
	 * 获取直播间列表
	 * 
	 * @param pageVO
	 *            分页
	 * @param recommend
	 *            是否推荐
	 * @param status
	 *            直播间状态
	 * @return 直播间分页
	 */
	IPage<Studio> studioList(PageVO pageVO, Integer recommend, String status);

	/**
	 * 修改直播间状态
	 * 
	 * @param broadcastMessage
	 *            直播间消息
	 */
	void updateStudioStatus(BroadcastMessage broadcastMessage);
}
